import QtQuick 1.1
import com.nokia.symbian 1.1
import com.nokia.extras 1.1

import "cores.js" as Cores

Page {
    id: mainPage
    tools: ToolBarLayout {
        id: toolBarLayout
        enabled: !ocupadoLed.running
        ToolButton {
            flat: true
            iconSource: "toolbar-back"
            onClicked: {
                Qt.quit();
            }
        }
        ToolButton {
            flat: true
            iconSource: "toolbar-menu"
            onClicked: {
                menu.open();
            }
        }
    }

    Menu {
        id: menu
        enabled: !ocupadoLed.running
        MenuLayout {
            MenuItem {
                text: "Atualizar vagas"
                onClicked: {
                    ocupadoLed.running = true;
                    apinfo.Consultar();
                }
            }
            MenuItem {
                text: "Vagas em cache"                
                enabled: !apinfo.processando
                onClicked: {                    
                    pageStack.push(Qt.resolvedUrl("VagasPage.qml"));
                }
            }            
            MenuItem {
                text: "Configurar"
                onClicked: {
                    pageStack.push(Qt.resolvedUrl("ConfiguracaoPage.qml"));
                }
            }
        }
    }

    Connections {
        id: cnxConn
        target: apinfo

        property int imageId: 0

        onImagemCaptcha: {
            ocupadoLed.running = false;
            imgCaptcha.source = "image://captcha/captcha" + (cnxConn.imageId++)
            dlgCaptcha.open();
        }

        onEnviandoCaptcha: {
            ocupadoLed.running = true;
            info.iconSource = "";
            info.timeout = 2000;
            info.text = "Aguarde, enviando autenticação...";
            info.open();
            dlgCaptcha.close();
        }

        onCaptchaValido: {
            ocupadoLed.running = false;
            dlgCaptcha.close();
        }

        onCaptchaInvalido: {
            ocupadoLed.running = false;
            info.text = "Captcha inválido!";
            info.iconSource = "qrc:///fail";
            info.open();
            txtCaptcha.text = "";
            txtCaptcha.forceActiveFocus();
        }

        onSemBuffer: {
            ocupadoLed.running = false;
            info.text = "Não foi realizada nenhuma consulta ainda!";
            info.iconSource = "qrc:///fail";
            info.open();
        }

        onProcessando: {
            ocupadoLed.running = false;
            mainPage.pageStack.push(Qt.resolvedUrl("VagasPage.qml"));
        }

        onProcessandoPagina: {

        }

        onInicioProcessamento: {
            ocupadoLed.running = false;
            mainPage.pageStack.push(Qt.resolvedUrl("VagasPage.qml"));
        }

        onFimProcessamento: {
            ocupadoLed.running = false;
            info.text = "Vagas atualizadas!";
            info.iconSource = "qrc:///ok";
            info.open();            
        }

        onCancelado: {            
            dlgCancelado.open();
            ocupadoLed.running = false;
        }

        onAguardeUmMomento: {            
            dlgCaptcha.close();
            dlgLimiteExcedido.open();
            ocupadoLed.running = false;
        }

        onErroConexao: {
            ocupadoLed.running = false;
            dlgErro.open();            
        }
    }    

    QueryDialog {
        id: dlgErro
        titleText: "Erro de comunicação"
        icon: "qrc:///cancel"
        message: "Ocorreu um erro durante a tentativa de consulta ao serviço de vagas! Verifique se você está conectado à internet.<br />"
        acceptButtonText: "Ok"
        onAccepted: {
            dlgErro.close();
        }
    }

    QueryDialog {
        id: dlgLimiteExcedido
        titleText: "Limite de consulta"
        icon: "qrc:///cancel"
        message: "O APINFO implementou um sistema de controle de consultas por IP. <br />Aguarde um momento antes de atualizar novamente. <br />"
        acceptButtonText: "Ok"
        onAccepted: {
            dlgLimiteExcedido.close();
        }
    }

    QueryDialog {
        id: dlgCancelado
        titleText: "Consulta cancelada"
        icon: "qrc:///cancel"
        message: "A consulta foi cancelada!<br />"
        acceptButtonText: "Ok"
        onAccepted: {
            dlgCancelado.close();
        }
    }

    Dialog {
        id: dlgCaptcha
        title: Item {
            anchors.fill: parent
            Text {
                text: "Captcha"
                anchors.horizontalCenter: parent.horizontalCenter
                color: platformStyle.colorNormalLight
                font.pixelSize: 22
            }            
        }
        content: Item {
            width: parent.width; height: col.height + 20
            Column {
                id: col
                spacing: 5
                anchors { verticalCenter: parent.verticalCenter; horizontalCenter: parent.horizontalCenter }
                Image {
                    id: imgCaptcha
                    width: 100; height: 35
                }

                TextField {
                    id: txtCaptcha
                    width: imgCaptcha.width; height: imgCaptcha.height;
                }
            }
        }
        buttons: ButtonRow {            
            spacing: 10
            anchors.horizontalCenter: parent.horizontalCenter            
            Button {                
                width: 80
                iconSource: "qrc:///ok"
                onClicked: {
                    ocupadoLed.running = true;
                    apinfo.Captcha(txtCaptcha.text);
                }
            }
            Button {
                width: 80
                iconSource: "qrc:///cancel"
                onClicked: {
                    ocupadoLed.running = false;
                    dlgCaptcha.close();
                }
            }
        }
    }

    InfoBanner {
        id: info
        timeout: 1000        
    }

    BusyIndicator {
        id: ocupadoLed
        anchors.centerIn: parent
        width: 64; height: 64
        opacity: (running ? 1 : 0)
    }

    Column {
        anchors.centerIn: parent
        Text {
            text: "OneClickJob"
            color: platformStyle.colorNormalLight
            font.pixelSize: 35
        }
        Text {
            id: txtLetJob
            text: "let the job's force be with you"
            color: platformStyle.colorNormalLight
            font.pixelSize: 25
        }
    }

    Text {
        anchors { right: parent.right; bottom: parent.bottom }
        color: platformStyle.colorNormalLight
        font.pixelSize: 16
        text: "Última atualização feita em " + Qt.formatDateTime(configuracao.dataUltimaAtualizacao, "dd/MM/yyyy");
        visible: !isNaN(configuracao.dataUltimaAtualizacao)
    }

    SequentialAnimation {
        id: anim
        running: true
        SmoothedAnimation {
            target: txtLetJob
            property: "opacity"; to: 0.30; velocity: 0.98; easing.type: Easing.InCirc
        }
        SmoothedAnimation {
            target: txtLetJob
            property: "opacity"; to: 1; velocity: 0.98; easing.type: Easing.OutElastic
        }
        onCompleted: {
            anim.running = true;
        }
    }
}
